#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>
#include <string.h>

typedef struct TreeNode* QDataType;
typedef struct QNode
{
	QDataType data;
	struct QNode* next;
}QNode;

typedef struct Queue
{
	QNode* head;
	QNode* tail;
	int size;
}Que;

void QInit(Que* pq);
void QPush(Que* pq, QDataType x);
void QPop(Que* pq);
bool QEmpty(Que* pq);
QDataType QFront(Que* pq);
QDataType QBack(Que* pq);
void QDestroy(Que* pq);

void PrintArray(int* a, int n);
void InsertSort(int* a, int n);
void SherSort(int* a, int n);
void SelectSort(int* a, int n);
void HeapSort(int* a, int n);
void BubbleSort(int* a, int n);
void QuickSort(int* a, int l, int r);
//void QuickSort1(int* a, int l, int r);
//void QuickSort2(int* a, int l, int r);
//void QuickSort3(int* a, int l, int r);
int QuickSort1(int* a, int l, int r);
int QuickSort2(int* a, int l, int r);
int QuickSort3(int* a, int l, int r);
void MergeSort(int* a, int l, int r);